//
//  EmptySafe.h
//  CPBaseXCode
//
//  Created by cp on 2024/9/19.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface EmptySafe : NSObject

@property (nonatomic, strong) NSMutableDictionary * Objectparameters;

+(id)processDictionaryIsNSNull:(id)obj;

/**判断空对象或空数组
 为空返回NO
 */
+(BOOL)objValues:(id)obj;
//+(BOOL)Values:(id)Values;
/**判断手机号11位**/
+(BOOL)isValidateMobile:(NSString *)mobile;

/**
 获取当地当前时间
 @param dateFor 时间显示格式 如@"yyyy-MM-dd"yyyy-MM-dd HH:MM:SS
 @return 时间字符串
 */
+ (NSString *)getCurrentTime:(NSString*)dateFor;

/**
 时间戳转时间,时间戳为13位是精确到毫秒的，10位精确到秒
 传入的时间戳str如果是精确到毫秒的记得要/1000
 @param timeStr 时间戳 13位 
 @param dateFormat 时间格式显示格式如@"yyyy-MM-dd HH:mm:ss"
 @return 返回时间
 */
+ (NSString *)getDateStringWithTimeStr:(NSString *)timeStr 
                            dateFormat:(NSString*)dateFormat;
/**
 字符串转时间戳 如：2017-4-10 17:15:10
 @param time 时间
 @return 时间戳
 */
+ (NSString *)getTimeStrWithString:(NSString *)time;
/**
 讲时间戳转化为字符串
 
 @param timestamp 时间戳
 @return 时间字符串
 */
+ (NSString *)convertTimeStampsToString:(NSString *)timestamp;
/**
 获取当前时间戳
 *1000 是精确到毫秒，不乘就是精确到秒
 @return 返回时间戳
 */
+ (NSString *)currentTimeStr;
/**
  *  判断字符串中是否存在emoji
  * @param string 字符串
  * @return YES(含有表情)
  */
+(BOOL)hasEmoji:(NSString*)string;
/**
  *  判断字符串中是否存在emoji
  * @param string 字符串
  * @return YES(含有表情)
  */
+(BOOL)stringContainsEmoji:(NSString *)string;
//判断是否含有非法字符 yes 有  no没有
+ (BOOL)JudgeTheillegalCharacter:(NSString *)content;
/** 判断字符串中是否包含数字 **/
+(BOOL)isStringContainNumberWith:(NSString *)str;
+(NSString *)appVersion;
+(NSString *)device;

//是否全是中文
+ (BOOL)regularChinese:(NSString*)regularstr;
//是否全是数字
+(BOOL)regularNumber:(NSString*)regularstr;
/** 是否含有中文 */
+ (BOOL)checkIsChinese:(NSString *)string;
/** 密码 数字、字母、符号至少两种 */
+(BOOL)checkPassword:(NSString *)password;
/** 去除掉首尾的空白字符和换行字符 */
+(NSString*)textstr:(NSString*)strtext;

#pragma mark - *****正则判断元素是否是数字
+(BOOL)inputShouldNumber:(NSString *)inputString;
#pragma mark - ***** 判断至多两位小数的正则表达式
//首先是整数部分： [0-9] 意思是0到9任意一个数字都匹配   + 代表可是是一个或者多个  因此整数部分是：  [0-9]+
//接下来是小数部分 ：  首先要表示小数点  \\. (因为小数点是特殊符号，所以前面需要加一个\来转义) ；     [0-9]{1,2} 代表可以是1或者2位数字   因此小数部分是：\\.[0-9]{1,2}
+(BOOL)validateMoney:(NSString *)money;
/** 银行卡号密文形式展示 */
+(NSString *)getNewStarBankNumWitOldNum:(NSString*)strtext;
#pragma mark - ***** 验证输入的是否 1到99之间的整数
+(BOOL)ba_isAllNumber:(NSString *)allNumberStr;

// 比较两个日期的大小
+(NSInteger)compareDate:(NSString*)aDate withDate:(NSString*)bDate;

//空值处理
+(NSString*)ObjectVlaue:(id)ObjectVlaue;

#pragma mark - 是否开启APP推送
/**是否开启推送*/
+ (BOOL)isSwitchAppNotification;

/**8-16的英文数字组合
 */
+ (BOOL)isValidPassword:(NSString *)password ;
//判断是否是手机号码
+ (BOOL) IsValiddateMobile:(NSString*)pstrMobile;
/**当前时间搓*/
+(NSString*)curTimestamp;

/**获取当前最上层的控制器*/
+ (UIViewController *)getTopMostController;
/**用图片链接数组 拼凑群组聊天九宫格头像
 @param group 图片链接数组
 */
+ (void)createGroupAvatar:(NSArray *)group finished:(void (^)(UIImage *groupAvatar))finished;
//判断字符串是否为空
+ (BOOL)isBlankString:(NSString *)string;
/**通过时间戳返回年月日的格式
 @return时间格式年-月-日
 */
+(NSString *)convertDayUpTimeStampsToString:(NSString *)timestamp;
/**通过时间戳返回时分的格式
 @return时间格式时-分-
 */
+ (NSString *)convertTimeStampsToHM:(NSString *)timeStamps;
/**是否是官方号*/
+(BOOL)isGuanFangHao:(NSString*)userId;
+ (NSDate *)dateFromString:(NSString *)dateString;
#pragma mark - 是否开启APP推送
/**是否开启推送*/
+ (void)isSwitchAppNotification:(void (^)(BOOL isSwitch))completionHandler;
+(NSString*)filterCharacter:(NSString*)str;
+(BOOL)islengthstr:(NSString *)passstr;
//获取当前的时间
+(NSString*)getCurrentTimes;
//
+(NSString *)getNowTimeTimestampnew;
+(NSString*)Tockenstr;
//根据时间戳计算年龄
+(NSInteger)ageWithDateOfBirth:(NSString *)dateStr;

@end

NS_ASSUME_NONNULL_END
